package main

import (
	"github.com/gin-gonic/gin"
	"github.com/spf13/viper"
	"go_web_template/common"
	"go_web_template/config"
	"go_web_template/middleware"
	"go_web_template/task"
)

func main() {
	//初始化配置文件
	config.InitConfig()
	//初始化数据库
	db := common.InitDB()
	defer db.Close()
	//启动各模块
	Start()
	//路由配置
	r := Router()
	//端口配置
	port := viper.GetString("server.port")
	if err := r.Run(":" + port); err != nil {
		panic(err)
	}
}

func Router() *gin.Engine {
	r := gin.New()
	r.Use(
		//异常处理
		middleware.RecoveryMiddleware(),
		//跨域
		middleware.CORSMiddleware(),
		//请求参数处理
		middleware.RequestParamsMiddleware(),
		//日志
		middleware.LogMiddle(),
	)
	return StartRouter(r)
}

// 启动各模块
func Start() {
	//初始化redis
	common.InitRedis()
	//开启定时任务
	task.Start()
	//初始化mq
	//rabbitmq.InitMq()
}
